.macro IMPORT_START module, flags_ver

        .set push
        .section .rodata.sceResident, "a"
        .word   0
__stub_modulestr_\module:
        .asciz  "\module"
        .align  2

        .section .lib.stub, "a", @progbits
        .global __stub_module_\module
__stub_module_\module:
        .word   __stub_modulestr_\module
        .word   \flags_ver
        .word   0x5
        .word   __executable_start
        .word   __executable_start

        .set pop
.endm

.macro IMPORT_FUNC module, funcid, funcname

        .set push
        .set noreorder

        .extern __stub_module_\module
        .section .sceStub.text, "ax", @progbits
        .globl  \funcname
        .type   \funcname, @function
        .ent    \funcname, 0
\funcname:
        .word   __stub_module_\module
        .word   \funcid
        .end    \funcname
        .size   \funcname, .-\funcname

        .section .rodata.sceNid, "a"
        .word   \funcid

        .set pop
.endm

.macro IMPORT_FUNC_WITH_ALIAS module, funcid, funcname, alias

        .set push
        .set noreorder

        .extern __stub_module_\module
        .section .sceStub.text, "ax", @progbits
        .globl  \alias
        .type   \alias, @function
\alias:
        .globl  \funcname
        .type   \funcname, @function
        .ent    \funcname, 0
\funcname:
        .word   __stub_module_\module
        .word   \funcid
        .end    \funcname
        .size   \funcname, .-\funcname

        .section .rodata.sceNid, "a"
        .word   \funcid

        .set pop
.endm
